package com.jgzx.constant;

import cn.hutool.core.util.ObjectUtil;

/**
 * @author Chenzy
 * @description: 物料导出字段枚举
 * @create 2021/11/6 19:33
 **/
public enum MaterielExportEnum {

    /** 序号【serial_number】 */
    SERIAL_NUMBER("serial_number", "序号", false),
    /** 物料简称【short_name】 */
    SHORT_NAME("short_name", "物料简称", true),
    /** 拼音简码【pinyin_code】 */
    PINYIN_CODE("pinyin_code", "拼音简码", true),
    /** 物料来源【materiel_source】 */
    MATERIEL_SOURCE("materiel_source", "物料来源", true),
    /** 物料种类【materiel_type】 */
    MATERIEL_TYPE("materiel_type", "物料种类", true),
    /** 规格【specs_name】 */
    SPECS_NAME("specs_name", "规格", false),
    /** 型号【mode_name】 */
    MODE_NAME("mode_name", "型号", false),
    /** 品牌【brand_name】 */
    BRAND_NAME("brand_name", "品牌", false),
    /** 单位体积【unit_volume】 */
    UNIT_VOLUME("unit_volume", "单位体积", false),
    /** 单位重量【unit_weight】 */
    UNIT_WEIGHT("unit_weight", "单位重量", false),
    /** 税率【tax_rate】 */
    TAX_RATE("tax_rate", "税率", true),
    /** 条码【bar_code】 */
    BAR_CODE("bar_code", "条码", false),
    /** 是否合成:是/否【synthetic_str】 */
    SYNTHETIC_STR("synthetic_str", "是否合成:是/否", true),
    /** 备注【remark】 */
    REMARK("remark", "备注", false),
    /** 计量单位组【unit_group_name】 */
    UNIT_GROUP_NAME("unit_group_name", "计量单位组", true),
    /** 计量单位【unit_name】 */
    UNIT_NAME("unit_name", "计量单位", true),
    /** 最低价格【min_price】 */
    MIN_PRICE("min_price", "最低价格", false),
    /** 零售价格【retail_price】 */
    RETAIL_PRICE("retail_price", "零售价格", false),
    /** 默认仓库【warehouse_name】 */
    WAREHOUSE_NAME("warehouse_name", "默认仓库", false),
    /** 默认仓位【warehouse_position_name】 */
    WAREHOUSE_POSITION_NAME("warehouse_position_name", "默认仓位", false),
    /** 可销售:是/否【sale_flag_str】 */
    SALE_FLAG_STR("sale_flag_str", "可销售:是/否", false),
    /** 可采购:是/否【purchase_flag_str】 */
    PURCHASE_FLAG_STR("purchase_flag_str", "可采购:是/否", false),
    ;

    private final String value;
    private final String showName;
    private final boolean requiredFlag;

    /**
     * @param value 值
     * @param showName 显示名称
     */
    MaterielExportEnum(String value, String showName, boolean requiredFlag){
        this.value = value;
        this.showName = showName;
        this.requiredFlag = requiredFlag;
    }

    /**
     * 通过显示名称获取枚举对象值
     * @param name 显示名称
     * @return 枚举对象值
     */
    public static String getMaterielItemByName(String name){
        for(MaterielExportEnum materielExportEnum : MaterielExportEnum.values()){
            if(ObjectUtil.equal(name, materielExportEnum.showName())){
                return materielExportEnum.value();
            }
        }
        return null;
    }

    public String value() {
        return this.value;
    }

    public String showName() {
        return this.showName;
    }

    public boolean requiredFlag() {
        return this.requiredFlag;
    }
}
